#include "LuaPrec.h"

int CLua::GetStackTop()
{
	return lua_gettop(mLuaState);
}

void CLua::StackPop(int n)
{
	lua_pop(mLuaState,n);
}

bool CLua::RawEqual(int i1,int i2)
{
	return (lua_rawequal(mLuaState,i1,i2)!=0?true:false);
}

void CLua::RawGet(int index)
{
	lua_rawget(mLuaState,index);
}

void CLua::RawGetI(int index,int m)
{
	lua_rawgeti(mLuaState,index,m);
}

void CLua::PushValue(int index)
{
	lua_pushvalue(mLuaState,index);
}

void CLua::Replace(int index)
{
	lua_replace(mLuaState,index);
}

int CLua::Ref(int tableindex)
{
	return luaL_ref(mLuaState,tableindex);
}

void CLua::UnRef(int tableindex,int refindex)
{
	luaL_unref(mLuaState,tableindex,refindex);
}

void CLua::GetGlobal(const char* fieldname)
{
	lua_getglobal(mLuaState,fieldname);
}

bool CLua::IsUserData(int index)
{
	return (lua_isuserdata(mLuaState,index)!=0?true:false);
}

bool CLua::IsNil(int index)
{
	return lua_isnil(mLuaState,index);
}

void CLua::PushNil()
{
	lua_pushnil(mLuaState);
}

bool CLua::IsBool(int index)
{
	return lua_isboolean(mLuaState,index);
}

bool CLua::ToBool(int index)
{
	return (lua_toboolean(mLuaState,index)!=0?true:false);
}
void CLua::PushBool(bool b)
{
	lua_pushboolean(mLuaState,(b?1:0));
}

bool CLua::IsNumber(int index)
{
	return (lua_isnumber(mLuaState,index)!=0?true:false);
}

double CLua::ToNumber(int index)
{
	return lua_tonumber(mLuaState,index);
}

void CLua::PushNumber(double number)
{
	lua_pushnumber(mLuaState,number);
}

bool CLua::IsString(int index)
{
	return (lua_isstring(mLuaState,index)!=0?true:false);
}

const char* CLua::ToString(int index)
{
	return lua_tostring(mLuaState,index);
}

const char* CLua::PushString(const char* str)
{
	return lua_pushstring(mLuaState,str);
}

bool CLua::IsCFunction(int index)
{
	return (lua_iscfunction(mLuaState,index)!=0?true:false);
}

lua_CFunction CLua::ToCFunction(int index)
{
	return lua_tocfunction(mLuaState,index);
}

void CLua::PushCFunction(lua_CFunction func)
{
	lua_pushcfunction(mLuaState,func);
}

bool CLua::IsTable(int index)
{
	return (lua_istable(mLuaState,index)!=0?true:false);
}

void CLua::GetTable(int index)
{
	return lua_gettable(mLuaState,index);
}

bool CLua::NewMetatable(const char* tname)
{
	if(!tname)
		return false;
	return (luaL_newmetatable(mLuaState,tname)!=0?true:false);
}

bool CLua::GetMetatable(int index)
{
	return (lua_getmetatable(mLuaState,index)!=0?true:false);
}

bool CLua::IterNext(int index)
{
	return (lua_next(mLuaState,index)!=0?true:false);
}

